#include <iostream>
#include <cmath> //获得标准库数学函数接口，include <cmath>相当于c语言中的 include <math.h>
#include "MyVector.h" //获得自定义的接口信息
#include "chapter_class/Human.h"

using namespace std;

constexpr double add(double a, double b) {
    //常量表达式申明的函数中只能有一条用于计算某个值的return语句
    return a + b;
}

int main() {
    cout << "Hello, World!请输入你的姓名:" << endl;
    /*  string name ;
      cin >> name ;
      cout << name << endl;*/

    cout << "bool | " << sizeof(bool) << endl;
    cout << "char | " << sizeof(char) << endl;
    cout << "short | " << sizeof(short) << endl;
    cout << "int | " << sizeof(int) << endl;
    cout << "long | " << sizeof(long) << endl;
    cout << "float | " << sizeof(float) << endl;
    cout << "double | " << sizeof(double) << endl;
    /*自动类型推断*/
    auto a = 1;
    cout << sizeof a << endl;
    //常量初始化之后就不会再被改变，数据在内存中处于只读状态
    const int b = 12;
    double d = add(a, b) * 2;
    cout << d << endl;

    //数组
    char author[4] = {'c', 'b', 'd'};
    //数组变量的名称是一个指向数组首元素的指针。
    char *p = author;
    cout << *p << endl;

    //也可以通过&取一个元素的指针
    char *p1 = &author[2] ;
    cout << *p1 << endl ;

    //通过for循环遍历一个数组
    for (auto u : author) {
        cout << u;
    }
    cout << endl ;

    Human human ;
    human.setAge(28);
    human.setName("赵东朝");

    cout << human.getName() << "的年龄为：" << human.getName() << endl ;
    //测试operator
    cout << human(1);//实际上调用的是human.operator()(i)这个函数
    /*
     * 1 在main函数中给操作系统一个程序执行的返回值，0表示执行成功，非0表示执行失败
     * 2 不写return 0 时程序会默认返回一个0
     * 3 返回值在window中用处不大，主要在Linux和Uinx中有使用
     **/
    return 0;
}

double sqrt_sum(MyVector& v){
    double sum = 0 ;
    for (int i = 0; i !=v.size() ; ++i) {
        sum += sqrt(v[i]);
    }
}